<?php

/**
 * 创建一个socket服务
 */


$address = '127.0.0.1';
$port = 8080;

startSocketServer($address, $port);


function startSocketServer($address, $port)
{
    // 创建一个 TCP/IP socket
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

    // 绑定 socket 到指定的地址和端口
    socket_bind($socket, $address, $port);

    // 监听指定的 socket
    socket_listen($socket);
    echo "Socket server started at $address:$port\n";

    while (true) {
        // 接受客户端连接
        // 此处将会阻塞住，一直到有客户端来连接服务器。阻塞状态的进程是不会占据CPU的,所以你不用担心while循环会将机器拖垮，不会的
        $client_socket = socket_accept($socket);
        echo "Client connected\n";

        // 从客户端接收数据
        $data = socket_read($client_socket, 1024);
        echo "Received data: $data\n";

        // 向客户端发送数据
        $response = "Hello, client!";
        socket_write($client_socket, $response, strlen($response));

        socket_close($client_socket);
    }

    //关闭连接
    socket_close($socket);
}